<?php
use Pinenut\Config;
class DiConfig extends Config {
	static $config = [

			'staticDependencies' => [
					'Model' => [
							'_adapterClass' => 'adapter'
					],
					'Pinenut\Files\File' => [
							'_fileAdapterClass' => 'fileAdapter'
					],
//                     'NotificationDelivery\Notification\Dispatcher' => [
//                         '_configClass' => 'queueDispatcher'
//                     ],
					'Pinenut\Action' => [
						'postprocessingMethod' => 'actionPostprocessing'
					],
					'Resources\Publisher' => [
						'basePath' => 'publisherBasePath',
						'baseUri' => 'publisherBaseUri',
					],

			],

			'objectDependencies' => [ ]
	];

	/**
	 * возвращаем все применяемые зависимости
	 * т.к.
	 * в свойстве объекта нельзя было сделать безымянные функции и
	 * прочее - пришлось вынести, а в гетере сливать...
	 *
	 * @return multitype[]
	 */
	static function dependencies() {
		return [
				// внедряем имя класса
				'adapter' => '\Pinenut\Model2\Adapter\Mongo',
				'fileAdapter' => '\Pinenut\Files\Adapter\MongoGridFS',
				'profile' => '\Users\Profile',
				'longPulling' => '\LongPullingConfig',
				'queueDispatcher' => '\DispatcherConfig',
				'actionPostprocessing' => function() { return '\Resources\Layout\Postprocessing::run';},
				'publisherBasePath' => dirname($_SERVER['SCRIPT_FILENAME']) . DIRECTORY_SEPARATOR . 'resources',
				'publisherBaseUri' => '/resources',
		];
	}
	static function get($path = null) {
		if (! isset ( static::$config ['dependencies'] )) {
			static::$config ['dependencies'] = static::dependencies ();
		}
		return static::$config;
	}
}